/*
 Problem Description
“今年暑假不AC？”
“是的。”
“那你干什么呢？”
“看世界杯呀，笨蛋！”
“@#$%^&*%...”

确实如此，世界杯来了，球迷的节日也来了，估计很多ACMer也会抛开电脑，奔向电视了。
作为球迷，一定想看尽量多的完整的比赛，当然，作为新时代的好青年，你一定还会看一些其它的节目，比如新闻联播（永远不要忘记关心国家大事）、非常6+7、超级女生，以及王小丫的《开心辞典》等等，假设你已经知道了所有你喜欢看的电视节目的转播时间表，你会合理安排吗？（目标是能看尽量多的完整节目）
Input
输入数据包含多个测试实例，每个测试实例的第一行只有一个整数n(n<=100)，表示你喜欢看的节目的总数，然后是n行数据，每行包括两个数据Ti_s,Ti_e (1<=i<=n)，分别表示第i个节目的开始和结束时间，为了简化问题，每个时间都用一个正整数表示。n=0表示输入结束，不做处理。
Output
Sample Input
12
1 3
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
5 10
4 14
2 9
0
Sample Output
5
-------------------------------------------------------
解题思路：排序后寻找最优解
0 7
1 3
2 9
3 4
3 8
4 14
5 10
6 12
8 18
10 15
15 19
15 20

 */
package com.yuan.algorithms.training20150719;

import java.util.Scanner;

public class 今年暑假不AC {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			int n = sc.nextInt();
			if (n==0) {
				break;
			}
			int[][] arr = new int[2][n];
			for (int i = 0; i < n; i++) {
				arr[0][i] = sc.nextInt();
				arr[1][i] = sc.nextInt();
			}
			sort(arr);
			int sum = 0;//可以看的节目数
			int start = 0, end = 0;//节目开始、结束时间
			for (int i = 0; i < n; i++) {
				if (arr[0][i]<end) {//判断当前节目开始时间是否小于上一个节目结束时间
					if (arr[1][i]<end) {//判断当前节目结束时间是否小于上一个节目结束时间
						//当前节目比上一个节目的选择更为优化，将当前节目更新为选择的节目
						start = arr[0][i];
						end = arr[1][i];
						//sum++;
					}
				}else {//节目开始时间大于上一个节目结束时间，可以观看这个节目
					//更新节目开始和结束时间并累加观看节目总数
					start = arr[0][i];
					end = arr[1][i];
					sum++;
				}
			}
			System.out.println(sum);
		}
	}

	/**
	 * 对二维数组进行升序排序
	 * @param arr
	 */
	private static void sort(int[][] arr) {
		//根据节目开始时间排序
		for (int i = 0; i < arr[0].length; i++) {
			for (int j = i+1; j < arr[0].length; j++) {
				if (arr[0][i] > arr[0][j]) {
					int temp1 = arr[0][i];
					int temp2 = arr[1][i];
					arr[0][i] = arr[0][j];
					arr[1][i] = arr[1][j];
					arr[0][j] = temp1;
					arr[1][j] = temp2;
				}
			}
		}
		//根据节目结束时间排序
		for (int i = 0; i < arr[0].length; i++) {
			for (int j = i+1; j < arr[0].length; j++) {
				if (arr[0][i]==arr[0][j] && arr[1][i] > arr[1][j]) {
					int temp1 = arr[0][i];
					int temp2 = arr[1][i];
					arr[0][i] = arr[0][j];
					arr[1][i] = arr[1][j];
					arr[0][j] = temp1;
					arr[1][j] = temp2;
				}
			}
		}
	}

}
